<?php

/**
 * 
 * Description of class DbExternBedrijf
 * Database klassen om extern bedrijf op te slaan, aan te passen, verwijderen of op te halen.
 * 
 * @version 0.2
 * @author Sander van Belleghem
 * 
 * Changelog:
 * Query's op database niveau uitvoeren ipv applicatie niveau.
 * 
 */

require_once '../defs/constants.php';
require_once FILE_DB_DATABASE;

class DbExternBedrijf extends Database {
    
    private $aanwezig_extern_id = '';
    private $aanwezig_id = '';
    private $bedrijfs_id = '';
    
    public function __construct($aanwezig_extern_id = ''){
        if (DEBUG_LVL & DEBUG_LVL_CLASS) echo __FILE__ . __LINE__ .': ' . __CLASS__ .'<BR/>';
        
        parent::__construct();
        // If Observatie id get versie data
        if (!empty ($aanwezig_extern_id)){
            $this->get($aanwezig_extern_id);
        } else {
            $this->reset();
        }
    }
    
    private function get($aanwezig_extern_id){
        
        $query = mysql_query("SELECT * FROM extern_bedrijf WHERE aanwezig_extern_id = '" . mysql_real_escape_string($aanwezig_extern_id) . "' LIMIT 1 ");
        if (!$res = mysql_fetch_object($query)){
            
            $this->reset();
            throw new Exception(DB_ERROR_COULDNOTSELECT);
        }
        
        $this->aanwezig_extern_id = $aanwezig_extern_id;
        $this->aanwezig_id = $res->aanwezig_id;
        $this->bedrijfs_id = $res->bedrijfs_id;
        
        if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
    }
     
    public function getAanwezigExternId(){
        
        return $this->aanwezig_extern_id;
    }

    public function getAanwezigId(){
        
        return $this->aanwezig_id;
    }
    
    public function getBedrijfsId(){
        
        return $this->bedrijfs_id;
    }
   
    public function delete(){
        
        $query = "DELETE FROM extern_bedrijf WHERE extern_bedrijf . aanwezig_extern_id ='" . mysql_real_escape_string($this->aanwezig_extern_id) . "'  LIMIT 1 ";
        
        if (!$this->dbquery($query)){
            throw new Exception(DB_ERROR_COULDNOTDELETE);
        }

        if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
        
        $this->reset();
    }

    public function save($aanwezig_id, $bedrijfs_id){
        
        if ($this->checkId($aanwezig_id) && is_int($bedrijfs_id)){

            $query = "INSERT INTO extern_bedrijf (aanwezig_id, bedrijfs_id) 
                        VALUES ('" . mysql_real_escape_string($aanwezig_id) . "', 
                                '" . mysql_real_escape_string($bedrijfs_id) . "')";

            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';

            if (!$this->dbquery($query)){
                throw new Exception(DB_ERROR_NIETVERWERKT);
            }
            
            // Update class attr
            $this->aanwezig_extern_id = mysql_insert_id();
            $this->aanwezig_id = $aanwezig_id;
            $this->bedrijfs_id = $bedrijfs_id;
            
            return true;
            
        } else {
            throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }
    
    public function update($aanwezig_id, $bedrijfs_id){

        if ($this->checkId($aanwezig_id) && is_int($bedrijfs_id)){
            
            $query = "UPDATE extern_bedrijf 
                        SET aanwezig_id = '" . mysql_real_escape_string($aanwezig_id) . "', 
                            bedrijfs_id = '" . mysql_real_escape_string($bedrijfs_id) . "'
                        WHERE extern_bedrijf . aanwezig_extern_id ='" . mysql_real_escape_string($this->aanwezig_extern_id) . "'";
            
            if (!$this->dbquery($query)){
                throw new Exception(DB_ERROR_NIETVERWERKT);
            }
            
            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            $this->aanwezig_id = $aanwezig_id;
            $this->bedrijfs_id = $bedrijfs_id;
            
            return true;
            
        } else {
            throw new Exception(DB_ERROR_INVOERFOUT);
        }
    }

    private function reset(){
        
        $this->aanwezig_extern_id = '';
        $this->aanwezig_id = '';
        $this->bedrijfs_id = '';
    }
    
    public function __destruct(){
        parent::__destruct();
    }
}

class TestDbExternBedrijf{
    
    public function TestDbExternBedrijf(){
        try {
            
            $save = new DbExternBedrijf();
            $save->save(15, 2, 'vanBelleghem');
            
            $update = new DbExternBedrijf(1); 
            $update->update(5, 16, 'Sander');
            
            $delete = new DbExternBedrijf(1);
            $delete->delete();
            
        } catch (Exception $e){
            echo '<pre>';
            echo 'Caught exception: ',  $e->getMessage(), "\n";
            echo '</pre>';
        }
    }
}
?>